import type { Dayjs } from 'dayjs';

import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace BaseinfoDemandApi {
  /** 需求指标信息 */
  export interface BaseinfoIndicator {
    id: number; // 序号
    ruleName: string; // 规则名称
    ruleDescription: string; // 规则描述
    targetNo: number; // 指标编码
    targetName: string; // 指标名称
    targetDescription: string; // 指标描述
    demandNo: string; // 需求编码
    status: string; // 状态
    flag: boolean; // 1新增2更新3删除
  }

  /** 需求管理信息 */
  export interface BaseinfoDemand {
    id: number; // 序号
    demandName: string; // 需求名称
    demandNo?: string; // 需求编码
    companyName: string; // 企业名称
    priceInterval: string; // 价格区间
    dateEnd: Dayjs | string; // 截止时间
    sector: string; // 所属行业
    serviceType: string; // 产品服务
    customerType: string; // 服务客群
    serviceDescription: string; // 服务描述
    demandDescription: string; // 需求描述

    modelingType: string; // 建模名称

    modelingDescription: string; // 建模描述
    processType: string; // 流程名称
    processDescription: string; // 流程描述
    demandStatus: string; // 需求状态
    phone: string; // 联系电话
    status: string; // 状态
    baseinfoindicators?: BaseinfoIndicator[];
  }
  export interface BaseinfoDemandStatus {
    id: number; // 序号
    demandName: string; // 需求名称
    demandNo: string; // 需求编码
    companyName: string; // 企业名称
    demandStatus: string; // 需求状态
    onlyDemand: boolean; // 仅仅需求主表
  }
}

/** 查询需求管理分页 */
export function getBaseinfoDemandPage(params: PageParam) {
  return requestClient.get<PageResult<BaseinfoDemandApi.BaseinfoDemand>>(
    '/csyt/baseinfo-demand/page',
    { params },
  );
}

/** 查询需求管理详情 */
export function getBaseinfoDemand(id: number) {
  return requestClient.get<BaseinfoDemandApi.BaseinfoDemand>(
    `/csyt/baseinfo-demand/get?id=${id}`,
  );
}

/** 新增需求管理 */
export function createBaseinfoDemand(data: BaseinfoDemandApi.BaseinfoDemand) {
  return requestClient.post('/csyt/baseinfo-demand/create', data);
}

/** 修改需求管理 */
export function updateBaseinfoDemand(data: BaseinfoDemandApi.BaseinfoDemand) {
  return requestClient.put('/csyt/baseinfo-demand/update', data);
}

/** 删除需求管理 */
export function deleteBaseinfoDemand(id: number) {
  return requestClient.delete(`/csyt/baseinfo-demand/delete?id=${id}`);
}

/** 批量删除需求管理 */
export function deleteBaseinfoDemandList(ids: number[]) {
  return requestClient.delete(
    `/csyt/baseinfo-demand/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出需求管理 */
export function exportBaseinfoDemand(params: any) {
  return requestClient.download('/csyt/baseinfo-demand/export-excel', params);
}

// ==================== 子表（需求指标） ====================

/** 获得需求指标列表 */
export function getBaseinfoIndicatorListByDemandNo(demandNo: number) {
  return requestClient.get<BaseinfoDemandApi.BaseinfoIndicator[]>(
    `/csyt/baseinfo-demand/baseinfo-indicator/list-by-demand-no?demandNo=${demandNo}`,
  );
}

/** 修改需求状态管理 */
export function updateBaseinfoDemandStatus(
  data: BaseinfoDemandApi.BaseinfoDemandStatus,
) {
  return requestClient.put('/csyt/baseinfo-demand/update', data);
}
